Appointment Scheduling Process API - Implementation Template
Setup guide
Importing Templates into Anypoint Studio
- In Studio, click the Exchange X icon in the upper left of the taskbar.
- Log in with your Anypoint Platform credentials.
- Search for the template.
- Click Open.
Running Templates in Anypoint Studio
After you import your template into Studio, follow these configuration steps to run it:
Appointment Scheduling Configuration
mule.env
- sets the environment where the application is to be deployed. For a studio deployment, the recommended mule.env value islocal
mule.key
- sets the encryption password to be used for encrypting secure properties. Update as needed.api.autodiscoveryID
should be configured inconfig-<mule.env>.yaml
file.api.baseurl
- sets the base url of the api. Replace/override as needed when deploying to any environment. Default value ishttps://localhost:8082/api
, whenmule.env
islocal
.primary
- sets the primary system api for the API. It should be configured inconfig-<mule.env>.yaml
file.
Cerner Configuration
cerner.baseUrl
- sets the base url for Cerner R4 requests. It should be configured inconfig-<mule.env>.yaml
filecerner.tokenUrl
- sets the token url for Cerner. It should be configured inconfig-<mule.env>.yaml
filecerner.scope
- set the scopes for the OAuth request to Cerner Token Url. Update the scopes as required for the operations. It should be configured inconfig-<mule.env>.yaml
filecerner.clientId
- sets the client id to be used for requests to Cerner Url. It should be configured inconfig-<mule.env>.yaml
filecerner.clientSecret
- sets the client secret to be used for requests to Cerner Url. It should be encrypted and configured inconfig-secured-<mule.env>.yaml
filecerner.source
- set the source for validating {sourceSystem} uri parameter. Update the scopes as required for the operations. It should be configured inconfig-<mule.env>.yaml
file. Default value is "Cerner".cerner.serviceTypeToken
- sets the serviceType url for Appointment/Slot search. The parameter includes the systemId created as part of Cerner Sys API setup. The systemId is part of the tokenUrl/baseUrl in the system APi. It should be configured inconfig.<mule.env>.yaml
. Examplehttps://fhir.cerner.com/<systemId>/codeSet/14249
. Either this or you could have the serviceTypeToken be part of the input request to the API for cerner.
EPIC Configuration
epic.tokenUrl
- sets the Epic token url. It should be configured inconfig-<mule.env>.yaml
fileepic.baseurlSTU3
- sets the Epic STU3 request url. It should be configured inconfig-<mule.env>.yaml
fileepic.baseurlR4
- sets the Epic R4 request url. It should be configured inconfig-<mule.env>.yaml
fileepic.clientId
- sets the client id for Epic OAuth request. It should be encrypted and configured inconfig-secured-<mule.env>.yaml
fileepic.privateKey
- sets the privateKey to be used for generating signed jwt token. It should be encrypted and configured inconfig-secured-<mule.env>.yaml
fileepic.appointment.findUrl
- sets the Epic Appointment url for finding appointments. It should be configured inconfig-<mule.env>.yaml
epic.appointment.bookUrl
- sets the Epic Appointment url for booking appointments. It should be configured inconfig-<mule.env>.yaml
epic.baseurl
- sets the base url for Epic EMR System. It should be configured inconfig-<mule.env>.yaml
file.epic.source
- set the source for validating {sourceSystem} uri parameter. Update the scopes as required for the operations. It should be configured inconfig-<mule.env>.yaml
file. Default value is "Epic".
Generic FHIR Client Configuration
generic-fhir-client-sys-api.host
should be configured inconfig-<mule.env>.yaml
file.generic-fhir-client-sys-api.port
should be configured inconfig-<mule.env>.yaml
file.generic-fhir-client-sys-api.clientid
should be configured inconfig-<mule.env>.yaml
file.generic-fhir-client-sys-api.clientsecret
should be encrypted and configured inconfig-secured-<mule.env>.yaml
file.
Deploy the system APIs referenced by the process API, which are:
HTTPS Configuration
https.host
— sets the service host interface. It should be configured inconfig-<mule.env>.yaml
file. (Defaults to 0.0.0.0 for all interfaces).https.port
— sets the HTTPS service port number. It should be configured inconfig-<mule.env>.yaml
file. (Default 8082).- TLS Configuration - Keystore properties setup:
keystore.alias
- sets the alias to the keystore. It should be configured inconfig-<mule.env>.yaml
file.keystore.path
- sets the path to the key file. Key should be available in /src/main/resources/keystore. It should be configured inconfig-<mule.env>.yaml
file.keystore.keypass
— sets keystore keypass to support HTTPS operation. It should be encrypted and configured inconfig-secured-<mule.env>.yaml
file.keystore.password
— sets keystore password to support HTTPS operation. It should be encrypted and configured inconfig-secured-<mule.env>.yaml
file.
Please refer to the attached link on how to generate the Keystore.
Tested and verified
This solution was developed and tested on Anypoint Studio 7.15 and Mule Runtime 4.4.0.
Run it
- Right-click the template project folder.
- Hover your mouse over 'Run as'.
- Click Mule Application (configure).
- Inside the dialog, select Environment and set the variable mule.env to the appropriate value (e.g., dev or local).
- Inside the dialog, select Environment and set the variable mule.key to the property encryption key that you used to encrypt your secure properties.
- Click Run.
Deployment instructions for CloudHub using provided scripts
Ensure the Maven profile CloudHub-DEV
has been properly configured in your settings.xml
file. Reference can be found by downloading the Accelerator Common Resources asset. Additional instructions are available in the Getting Started with MuleSoft Accelerators - Build Environment guide.
Update the config-.yaml properties appropriately and then use one of the following scripts to deploy the application to CloudHub:
- packageDeploy.sh or deployOnly.sh (Mac/Linux)
- packageDeploy.cmd or deployOnly.cmd (Windows)
Test it
- Use Advanced Rest Client or Postman to send request over HTTPS. The template includes a postman collection in
src/test/resources
folder. Update the collection variable(s) after successful import.